﻿/************************************************************************

   Extended Silverlight Toolkit

   Copyright (C) 2010-2012 Xceed Software Inc.

   This program is provided to you under the terms of the Microsoft Public
   License (Ms-PL) as published at http://extendedsilverlight.codeplex.com/license

   Please purchase a commercial version of this toolkit if you are using
   it in a commercial product. The commercial versions support the project,
   and also include more features for each control, priority support,
   source code, updates, removed watermark, and a proprietary license.

   Visit http://xceed.com and follow @datagrid on Twitter.

  **********************************************************************/

using System.Collections.Generic;
using System.Text;

namespace Xceed.Silverlight.DataGrid.Export
{
  public class CsvExporter : TextExporter
  {
    public CsvExporter( DataGridControl dataGridControl )
      : base( dataGridControl )
    {
      this.FormatSettings = new CsvFormatSettings();

      m_exporterWriter = new ExporterWriter( this.FormatSettings );
    }

    #region FormatSettings Property

    public CsvFormatSettings FormatSettings
    {
      get;
      set;
    }

    #endregion

    protected override void StartExport()
    {
      m_exporterWriter.CsvStartExport( this.BaseStream );
    }

    protected override void StopExport()
    {
      m_exporterWriter.CsvStopExport();
    }

    protected override void StopHeader( ExportContext exportContext, IList<ExportColumn> columns )
    {
      m_exporterWriter.CsvStopHeader();
    }

    protected override void StartHeaderField( ExportContext exportContext, string headerValue )
    {
      m_exporterWriter.CsvStartHeaderField( headerValue );
    }

    protected override void StartDataItem( ExportContext exportContext, object dataItem )
    {
      m_exporterWriter.CsvStartDataItem();
    }

    protected override void StopDataItem( ExportContext exportContext, object dataItem )
    {
      m_exporterWriter.CsvStopDataItem();
    }

    protected override void StartDataItemField( ExportContext exportContext, object fieldValue )
    {
      m_exporterWriter.CsvStartDataItemField( exportContext.FieldIndex, fieldValue );
    }

    internal override Encoding GetCurrentEncoding()
    {
      return Encoding.Unicode;
    }

    private ExporterWriter m_exporterWriter;
  }
}
